Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>Model View ViewModel</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/Model_View_ViewModel"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Model_View_ViewModel rootpage-Model_View_ViewModel skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Model View ViewModel</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr">
<p><b>Model View ViewModel</b> (<b>MVVM</b>) ist ein <a href="Entwurfsmuster" title="Entwurfsmuster">Entwurfsmuster</a> und eine Variante des <a href="Model_View_Controller" title="Model View Controller">Model-View-Controller</a>-Musters (MVC). Es dient zur Trennung zwischen Darstellung und Logik der <a href="Benutzerschnittstelle" title="Benutzerschnittstelle">Benutzerschnittstelle</a> (UI) und des <a href="Frontend_und_Backend" title="Frontend und Backend">Software-Backends</a>. Das Entwurfsmuster ist die Standardimplementierung von UI-Plattformen wie <a href="Cocoa_(API)" title="Cocoa (API)">Cocoa</a> (<a href="Apple" title="Apple">Apple</a>), <a href="Windows_Presentation_Foundation" title="Windows Presentation Foundation">Windows Presentation Foundation</a> (WPF, <a href="Microsoft" title="Microsoft">Microsoft</a>) und <a href="JavaFX" title="JavaFX">JavaFX</a> (<a href="Oracle" title="Oracle">Oracle</a>). Im Webbrowser wird das Muster durch bestimmte <a href="JavaScript" title="JavaScript">JavaScript</a>-<a href="Framework" title="Framework">Frameworks</a> wie <a href="React" title="React">React</a> oder <a href="Knockout.js" title="Knockout.js">Knockout.js</a> verfügbar, welche den Zustand einer <a href="HTML5" title="HTML5">HTML5</a>-Benutzeroberfläche verwalten können. Die Unterteilung der Benutzeroberfläche in <a href="Komponentenbasierte_Entwicklung" title="Komponentenbasierte Entwicklung">Komponenten</a>, die aufeinander aufbauen und schlussendlich als View die gesamte Applikationsoberfläche darstellen, wird <i><a href="Kompositum_(Entwurfsmuster)" title="Kompositum (Entwurfsmuster)">Compositing</a></i> genannt und ist typisch für MVVM-Anwendungen.
</p><p>Das MVVM-Entwurfsmuster erfordert neben dem Kompositum-Entwurfsmuster auch das <a href="Beobachter_(Entwurfsmuster)" title="Beobachter (Entwurfsmuster)">Beobachter</a>-Entwurfsmuster, da das <i>ViewModel</i> den Zustand der UI abbildet, der sich wiederum durch Eingabe- und andere Ereignisse ändert. Die unmittelbare Reaktion der UI auf Änderungen im <i>ViewModel</i> und umgekehrt realisiert die <a href="Echtzeit" title="Echtzeit">Echtzeit</a>-Datenbindung des Musters.
</p><p>MVVM erlaubte bei seiner Einführung die heute gebräuchliche Rollentrennung von UI-Designern im Frontend und Entwicklern im Backend, wodurch <a href="Schichtenarchitektur" title="Schichtenarchitektur">Anwendungsschichten</a> von verschiedenen Arbeitsgruppen entwickelt werden konnten. Im Desktop-Umfeld eingeführt, findet sich das MVVM-Entwurfsmuster heute in den meisten webbasierten Clients.
</p>

<div class="mw-heading mw-heading2"><h2 id="Geschichte">Geschichte</h2></div>
<p>Das MVVM wurde 2005 von <a href="Microsoft_MVP" title="Microsoft MVP">Microsoft MVP</a> John Gossman veröffentlicht. Es ist eine Spezialisierung des <i>Presentation Model</i> von <a href="Martin_Fowler" title="Martin Fowler">Martin Fowler</a><sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> und ist mit diesem insofern identisch, als beide Muster Zustand und Verhalten der View in ein separates UI-Model (Presentation bzw. View Model) verschieben. Das <i>Presentation Model</i> ermöglicht allerdings das Erzeugen einer View unabhängig von der UI-Plattform, wohingegen das MVVM ursprünglich auf UIs mittels WPF abzielt. Es findet allerdings inzwischen auch in anderen Bereichen Anwendung, ähnlich wie bei MVC.
</p>
<div class="mw-heading mw-heading2"><h2 id="Beschreibung">Beschreibung</h2></div>
<p>Das MVVM nutzt die funktionale Trennung des <a href="Model_View_Controller" title="Model View Controller">MVC-Musters</a> von Model und View. Zum Erreichen einer <a href="Lose_Kopplung" title="Lose Kopplung">losen Kopplung</a> zwischen diesen Komponenten wird ein Datenbindungsmechanismus verwendet. Das MVVM-Muster enthält folgende drei Komponenten:
</p>
<ul><li><i>Model:</i> <a href="Schichtenarchitektur#Datenzugriffsschicht" title="Schichtenarchitektur">Datenzugriffsschicht</a> für die Inhalte, die dem Benutzer angezeigt und von ihm manipuliert werden. Dazu benachrichtigt es über Datenänderungen und führt eine <a href="Datenvalidierung" title="Datenvalidierung">Validierung</a> der vom Benutzer übergebenen Daten durch. Es enthält die gesamte <a href="Gesch%C3%A4ftslogik" title="Geschäftslogik">Geschäftslogik</a> und ist für sich alleine durch <a href="Modultest" title="Modultest">Unit Tests</a> überprüfbar.</li></ul>
<ul><li><i>View:</i> Alle durch die <i>grafische Benutzeroberfläche</i> (<a href="Grafische_Benutzeroberfl%C3%A4che" title="Grafische Benutzeroberfläche">GUI</a>) angezeigten Elemente. Es bindet sich an Eigenschaften des ViewModels, um Inhalte darzustellen und zu manipulieren sowie Benutzereingaben weiterzuleiten. Durch die Datenbindung ist die View einfach austauschbar und ihr <a href="ASP.NET#Code-Behind-Modell" title="ASP.NET">Code-Behind</a> gering.</li></ul>
<ul><li><i>ViewModel:</i> Enthält die UI-Logik (Model der View) und dient als Bindeglied zwischen View und obigem Model. Einerseits tauscht es Information mit dem Model aus, ruft also <a href="Methode_(Programmierung)" title="Methode (Programmierung)">Methoden</a> oder <a href="Dienst_(Informatik)" title="Dienst (Informatik)">Dienste</a> auf. Andererseits stellt es der View öffentliche <a href="Sprachelemente_von_C-Sharp#Eigenschaften_(Schlüsselwörter_get,_set_und_value)" title="Sprachelemente von C-Sharp">Eigenschaften</a> und <a href="Kommando_(Entwurfsmuster)" title="Kommando (Entwurfsmuster)">Befehle</a> zur Verfügung. Diese werden von der View an <a href="Steuerelement" title="Steuerelement">Steuerelemente</a> gebunden, um Inhalte auszugeben bzw. UI-Ereignisse weiterzuleiten. Das ViewModel darf dabei keinerlei Kenntnis der View besitzen.</li></ul>
<p>Das MVVM-Muster kann als technologie-spezifisch bezeichnet werden, da für die Verknüpfung von View und ViewModel ein Datenbindungsmechanismus benötigt wird. Diese Infrastruktur wird häufig als <i>Binder</i> bezeichnet.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> Im Detail handelt es sich hierbei um einen bidirektionalen Einsatz des <a href="Beobachter_(Entwurfsmuster)" title="Beobachter (Entwurfsmuster)">Beobachter-Musters</a>. <i>Binder</i>, welche eine Datenbindung auf Basis von deklarativen Angaben etablieren können, sind für verschiedene Techniken vorhanden.
</p>
<div class="mw-heading mw-heading3"><h3 id=".NET_und_JavaFX">.NET und JavaFX</h3></div>
<p>In Bezug auf <a href="Windows_Presentation_Foundation" title="Windows Presentation Foundation">WPF</a> und <a href="Silverlight" class="mw-redirect" title="Silverlight">Silverlight</a> bedeutet MVVM, dass die View aus rein deklarativem <a href="XAML" class="mw-redirect" title="XAML">XAML</a>-Markup besteht. Sie kann von UI-Designern etwa mittels <a href="Microsoft_Expression_Blend" class="mw-redirect" title="Microsoft Expression Blend">Expression Blend</a> entworfen werden, wobei lediglich Datenbindungen zum ViewModel erzeugt werden müssen, aber kein Code-Behind. Die Logik wird in einer Programmiersprache wie <a href="C-Sharp" title="C-Sharp">C#</a> oder <a href="Visual_Basic_.NET" title="Visual Basic .NET">VB.NET</a> implementiert. Die Abhängigkeiten zwischen Markup und Code werden minimiert.
Gleiches gilt für JavaFX. Hier kann die View mittels FXML und beispielsweise SceneBuilder entwickelt und dann im ViewModel per Property Binding uni- oder bidirektional mit der Geschäftslogik verbunden werden.
</p>
<div class="mw-heading mw-heading3"><h3 id="JavaScript/HTML"><span id="JavaScript.2FHTML"></span>JavaScript/HTML</h3></div>
<p>Das MVVM-Muster bzw. der hierzu benötigte Datenbindungsmechanismus wurden im Jahr 2010 von dem Microsoft-Entwickler <i>Steve Sanderson</i> nach <a href="JavaScript" title="JavaScript">JavaScript</a> portiert. Die entstandene JavaScript-Bibliothek trägt den Namen <a href="Knockout.js" title="Knockout.js">Knockout.js</a>. Mittlerweile findet das MVVM-Muster ebenfalls Einsatz in anderen JavaScript-Frameworks, wie z. B. <a href="Angular" title="Angular">Angular</a>, <a href="Vue.js" title="Vue.js">Vue.js</a> oder <a href="React" title="React">React</a>. Durch die Verwendung des MVVM-Muster bei client-lastigen <a href="Webanwendung" title="Webanwendung">Webanwendungen</a> wird der Implementierungsaufwand reduziert, da sonst übliche manuelle <a href="Document_Object_Model" title="Document Object Model">DOM</a>-Zugriffe durch die Datenbindung stark reduziert werden können. Die Beschreibung der Datenbindung erfolgt ebenfalls deklarativ, wie bei <a href="Extensible_Application_Markup_Language" title="Extensible Application Markup Language">XAML</a>-basierten Microsoft-Produkten.
</p>
<div class="mw-heading mw-heading3"><h3 id="Android">Android</h3></div>
<p>Das MVVM-Muster und die Datenbindung kann ebenfalls bei der Implementierung mobiler <a href="Android_(Betriebssystem)" title="Android (Betriebssystem)">Android</a>-Anwendungen verwendet werden.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Vor-_und_Nachteile">Vor- und Nachteile</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Vorteile">Vorteile</h3></div>
<ul><li>Die <a href="Gesch%C3%A4ftslogik" title="Geschäftslogik">Geschäftslogik</a> kann unabhängig von der Darstellung bearbeitet werden. MVVM „erbt“ die leichtere Austauschbarkeit der View vom <a href="Model_View_Controller" title="Model View Controller">MVC</a>-Muster.</li>
<li>Die Testbarkeit verbessert sich, da die ViewModel die UI-Logiken enthalten und unabhängig von der View instanziiert werden können. Hierdurch sind keine UI-Tests nötig. Stattdessen genügen codebasierte <a href="Modultest" title="Modultest">Modultests</a> des ViewModel.</li>
<li>Die Menge von <a href="Glue_Code" title="Glue Code">Glue Code</a> zwischen Model und View wird durch den Verzicht von Controller-Instanzen gegenüber dem MVC-Muster reduziert.<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup></li>
<li>Views können von reinen UI-Designern gestaltet werden, während Entwickler unabhängig davon die Models und ViewModels implementieren.</li>
<li>Es können unterschiedliche Views erstellt werden, die alle an dasselbe ViewModel gebunden werden, ohne dass dort Änderungen an der Programmierung vorgenommen werden müssen.</li></ul>
<div class="mw-heading mw-heading3"><h3 id="Nachteile">Nachteile</h3></div>
<ul><li>Als Nachteil kann der höhere Rechenaufwand aufgrund des enthaltenen bi-direktionalen <a href="Beobachter_(Entwurfsmuster)" title="Beobachter (Entwurfsmuster)">Beobachters</a> gewertet werden.</li>
<li>Der generische Datenbindungsmechanismus erspart die Implementierung von verschiedenen Controllern. Allerdings ist dieser Mechanismus zur Umsetzung des MVVM-Muster zwingend erforderlich.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="MVVM-Frameworks">MVVM-Frameworks</h2></div>
<p>Es existieren verschiedene Frameworks, welche MVVM umsetzen.
</p>
<ul><li><a href="Windows_Presentation_Foundation" title="Windows Presentation Foundation">Windows Presentation Foundation</a></li>
<li><a href="Knockout.js" title="Knockout.js">Knockout.js</a> – MVVM in JavaScript</li>
<li><a href="Vue.js" title="Vue.js">Vue.js</a></li>
<li><a href="JavaFX" title="JavaFX">JavaFX</a></li>
<li><a href="SwiftUI" title="SwiftUI">SwiftUI</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Siehe_auch">Siehe auch</h2></div>
<ul><li><a href="Model_View_Controller" title="Model View Controller">Model View Controller</a></li>
<li><a href="Smart_UI" title="Smart UI">Smart UI</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Literatur">Literatur</h2></div>
<ul><li>Raffaele Garofalo: <i>Building Enterprise Applications with Windows Presentation Foundation and the Model View ViewModel Pattern</i>, Microsoft Press 2011, ISBN 978-0735650923</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Weblinks">Weblinks</h2></div>
<ul><li><a rel="nofollow" class="external text" href="https://www.norberteder.com/model-view-viewmodel-die-serie/">Norbert Eder: Model-View-ViewModel Die Serie</a> – Codebeispiel</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Einzelnachweise">Einzelnachweise</h2></div>
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text"><span class="cite"><a rel="nofollow" class="external text" href="https://martinfowler.com/eaaDev/PresentationModel.html"><i>Presentation Model.</i></a><span class="Abrufdatum"> Abgerufen am 27.&nbsp;März 2025</span>.</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Fde.wikipedia.org%3AModel+View+ViewModel&amp;rft.title=Presentation+Model&amp;rft.description=Presentation+Model&amp;rft.identifier=https%3A%2F%2Fmartinfowler.com%2FeaaDev%2FPresentationModel.html">&nbsp;</span></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text"><span class="cite"><a rel="nofollow" class="external text" href="https://books.zkoss.org/zk-mvvm-book/8.0/data_binding/binder.html"><i>Binder |.</i></a><span class="Abrufdatum"> Abgerufen am 27.&nbsp;März 2025</span>.</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Fde.wikipedia.org%3AModel+View+ViewModel&amp;rft.title=Binder+%7C&amp;rft.description=Binder+%7C&amp;rft.identifier=https%3A%2F%2Fbooks.zkoss.org%2Fzk-mvvm-book%2F8.0%2Fdata_binding%2Fbinder.html">&nbsp;</span></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><a href="#cite_ref-3">↑</a></span> <span class="reference-text"><span class="cite"><a rel="nofollow" class="external text" href="https://developer.android.com/topic/libraries/data-binding?hl=de"><i>Data Binding Library | App architecture.</i></a><span class="Abrufdatum"> Abgerufen am 27.&nbsp;März 2025</span>.</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Fde.wikipedia.org%3AModel+View+ViewModel&amp;rft.title=Data+Binding+Library+%7C+App+architecture&amp;rft.description=Data+Binding+Library+%7C+App+architecture&amp;rft.identifier=https%3A%2F%2Fdeveloper.android.com%2Ftopic%2Flibraries%2Fdata-binding%3Fhl%3Dde">&nbsp;</span></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><a href="#cite_ref-4">↑</a></span> <span class="reference-text"><span class="cite">John Gossman: <a rel="nofollow" class="external text" href="https://blogs.msdn.com/johngossman/archive/2006/03/04/543695.aspx"><i>Tales from the Smart Client: Advantages and disadvantages of M-V-VM.</i></a><span class="Abrufdatum"> Abgerufen am 28.&nbsp;Mai 2012</span>.</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Fde.wikipedia.org%3AModel+View+ViewModel&amp;rft.title=Tales+from+the+Smart+Client%3A+Advantages+and+disadvantages+of+M-V-VM.&amp;rft.description=Tales+from+the+Smart+Client%3A+Advantages+and+disadvantages+of+M-V-VM.&amp;rft.identifier=&amp;rft.creator=John+Gossman&amp;rft.date=">&nbsp;</span></span>
</li>
</ol>
<style data-mw-deduplicate="TemplateStyles:r261921266">
/* start https://de.wikipedia.org/ */


.mw-parser-output table.erw-nav-zebra>tbody>:nth-child(odd){background-color:var(--dewiki-hintergrundfarbe-basis)}.mw-parser-output .erw-nav-farbschema-blau .erw-nav-leiste{background-color:#f5f5f5}.mw-parser-output .erw-nav-farbschema-blau .erw-nav-gruppe{background-color:#e5ecf2}.mw-parser-output .erw-nav-farbschema-grau .erw-nav-leiste,.mw-parser-output .erw-nav-farbschema-grau .erw-nav-gruppe{background-color:#ececec}.mw-parser-output .erweiterte-navigationsleiste .klappleiste-inhalt>.wikitable>*>tr{border-top:2px solid #fdfdfd!important;border-bottom:2px solid #fdfdfd!important}@media screen{html.skin-theme-clientpref-night .mw-parser-output .erw-nav-farbschema-blau .erw-nav-leiste,html.skin-theme-clientpref-night .mw-parser-output .erw-nav-farbschema-blau .erw-nav-gruppe,html.skin-theme-clientpref-night .mw-parser-output .erw-nav-farbschema-grau .erw-nav-leiste,html.skin-theme-clientpref-night .mw-parser-output .erw-nav-farbschema-grau .erw-nav-gruppe{background-color:#202122}html.skin-theme-clientpref-night .mw-parser-output .erweiterte-navigationsleiste .klappleiste-inhalt .wikitable tr,html.skin-theme-clientpref-night .mw-parser-output .erweiterte-navigationsleiste .klappleiste-inhalt .wikitable td{border-color:#101418!important}html.skin-theme-clientpref-night .mw-parser-output .erw-nav-bild span[typeof="mw:File"] img{background-color:#c8ccd1}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .erw-nav-farbschema-blau .erw-nav-leiste,html.skin-theme-clientpref-os .mw-parser-output .erw-nav-farbschema-blau .erw-nav-gruppe,html.skin-theme-clientpref-os .mw-parser-output .erw-nav-farbschema-grau .erw-nav-leiste,html.skin-theme-clientpref-os .mw-parser-output .erw-nav-farbschema-grau .erw-nav-gruppe{background-color:#202122}html.skin-theme-clientpref-os .mw-parser-output .erweiterte-navigationsleiste .klappleiste-inhalt .wikitable tr,html.skin-theme-clientpref-os .mw-parser-output .erweiterte-navigationsleiste .klappleiste-inhalt .wikitable td{border-color:#101418!important}html.skin-theme-clientpref-os .mw-parser-output .erw-nav-bild span[typeof="mw:File"] img{background-color:#c8ccd1}}.mw-parser-output .erweiterte-navigationsleiste .hlist .wikitable{border-top:0px!important;border-bottom:0px!important;margin-top:0!important;margin-bottom:0!important}.mw-parser-output .erweiterte-navigationsleiste .hlist .wikitable tr:first-of-type td{border-top:0px!important}.mw-parser-output .erweiterte-navigationsleiste .hlist .wikitable tr:last-of-type td{border-bottom:0px!important}


/* end https://de.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r260755238">
/* start https://de.wikipedia.org/ */


.mw-parser-output div.klappleiste{border:1px solid var(--dewiki-rahmenfarbe1);clear:both;font-size:95%;box-sizing:border-box;margin-top:1.5em;padding:2px}.mw-parser-output div.klappleiste:after{clear:both;content:"";display:block}.mw-parser-output div.klappleiste-bild{float:left;padding:2px}.mw-parser-output div.klappleiste-kopf{background:var(--dewiki-hintergrundfarbe5);color:var(--color-base,#202122);text-align:center;font-weight:bold}.mw-parser-output div.klappleiste.mw-collapsed .klappleiste-bild{display:none}.mw-parser-output div.klappleiste+div.klappleiste,.mw-parser-output div.klappleiste+link+div.klappleiste,.mw-parser-output div.klappleiste+link+link+div.klappleiste,.mw-parser-output div.klappleiste+link+style+div.klappleiste,.mw-parser-output div.klappleiste+style+div.klappleiste,.mw-parser-output div.klappleiste+style+style+div.klappleiste,.mw-parser-output div.klappleiste+style+link+div.klappleiste{margin-top:-1px}@media screen{html.skin-theme-clientpref-night .mw-parser-output .klappleiste-bild span[typeof="mw:File"]:not(.skin-invert-image) img{background-color:#c8ccd1}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .klappleiste-bild span[typeof="mw:File"]:not(.skin-invert-image) img{background-color:#c8ccd1}}


/* end https://de.wikipedia.org/ */
</style>
<div class="klappleiste mw-collapsible navileiste erweiterte-navigationsleiste navigation-not-searchable center erw-nav-farbschema-blau" role="navigation">
<div class="klappleiste-kopf"><a href="Entwurfsmuster" title="Entwurfsmuster">Entwurfsmuster</a><div class="erweiterte-navigationsleiste-quicklinks" style="float:left; font-weight:normal; font-size:75%; margin-left:1em; margin-right:2em; display:none;"><span title="Vorlage anzeigen">V</span> – <span title="Diskussion anzeigen">D</span></div></div>
<div class="klappleiste-inhalt mw-collapsible-content" style="clear:left">
<table class="wikitable erw-nav-zebra" style="width:100%;margin:0;text-align:left;font-size:95%;margin-top:.1em;margin-bottom:.1em;">


<tbody><tr>
<td class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;border: 1px solid transparent;border-top: 1px solid #FFF;border-bottom: 2px solid #FFF;padding: 0 1em;"><b><a href="Erzeugungsmuster" title="Erzeugungsmuster">Erzeugungsmuster</a></b>
</td>
<td class="hlist" style="text-align: left;border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: 0 .25em;">
<p><a href="Abstrakte_Fabrik" title="Abstrakte Fabrik">Abstrakte Fabrik</a>&nbsp;| <a href="Erbauer_(Entwurfsmuster)" title="Erbauer (Entwurfsmuster)">Erbauer</a>&nbsp;| <a href="Fabrikmethode" title="Fabrikmethode">Fabrikmethode</a>&nbsp;| <a href="Prototyp_(Entwurfsmuster)" title="Prototyp (Entwurfsmuster)">Prototyp</a>&nbsp;| <a href="Singleton_(Entwurfsmuster)" title="Singleton (Entwurfsmuster)">Singleton</a>&nbsp;| <a href="Multiton" title="Multiton">Multiton</a>&nbsp;| <a href="Objektpool" title="Objektpool">Objektpool</a>
</p>
</td></tr>
<tr>
<td class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;border: 1px solid transparent;border-top: 1px solid #FFF;border-bottom: 2px solid #FFF;padding: 0 1em;"><b><a href="Strukturmuster" title="Strukturmuster">Strukturmuster</a></b>
</td>
<td class="hlist" style="text-align: left;border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: 0 .25em;">
<p><a href="Adapter_(Entwurfsmuster)" title="Adapter (Entwurfsmuster)">Adapter</a>&nbsp;| <a href="Br%C3%BCcke_(Entwurfsmuster)" title="Brücke (Entwurfsmuster)">Brücke</a>&nbsp;| <a href="Decorator" title="Decorator">Decorator</a>&nbsp;| <a href="Fassade_(Entwurfsmuster)" title="Fassade (Entwurfsmuster)">Fassade</a>&nbsp;| <a href="Fliegengewicht_(Entwurfsmuster)" title="Fliegengewicht (Entwurfsmuster)">Fliegengewicht</a>&nbsp;| <a href="Kompositum_(Entwurfsmuster)" title="Kompositum (Entwurfsmuster)">Kompositum</a>&nbsp;| <a href="Stellvertreter_(Entwurfsmuster)" title="Stellvertreter (Entwurfsmuster)">Stellvertreter</a>
</p>
</td></tr>
<tr>
<td class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;border: 1px solid transparent;border-top: 1px solid #FFF;border-bottom: 2px solid #FFF;padding: 0 1em;"><b><a href="Verhaltensmuster_(Software)" title="Verhaltensmuster (Software)">Verhaltensmuster</a></b>
</td>
<td class="hlist" style="text-align: left;border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: 0 .25em;">
<p><a href="Beobachter_(Entwurfsmuster)" title="Beobachter (Entwurfsmuster)">Beobachter</a>&nbsp;| <a href="Besucher_(Entwurfsmuster)" title="Besucher (Entwurfsmuster)">Besucher</a>&nbsp;| <a href="Interpreter_(Entwurfsmuster)" title="Interpreter (Entwurfsmuster)">Interpreter</a>&nbsp;| <a href="Iterator_(Entwurfsmuster)" title="Iterator (Entwurfsmuster)">Iterator</a>&nbsp;| <a href="Kommando_(Entwurfsmuster)" title="Kommando (Entwurfsmuster)">Kommando</a>&nbsp;| <a href="Memento_(Entwurfsmuster)" title="Memento (Entwurfsmuster)">Memento</a>&nbsp;| <a href="Schablonenmethode" title="Schablonenmethode">Schablonenmethode</a>&nbsp;| <a href="Strategie_(Entwurfsmuster)" title="Strategie (Entwurfsmuster)">Strategie</a>&nbsp;| <a href="Vermittler_(Entwurfsmuster)" title="Vermittler (Entwurfsmuster)">Vermittler</a>&nbsp;| <a href="Zustand_(Entwurfsmuster)" title="Zustand (Entwurfsmuster)">Zustand</a>&nbsp;| <a href="Zust%C3%A4ndigkeitskette" title="Zuständigkeitskette">Zuständigkeitskette</a>&nbsp;| <a href="Interceptor_(Entwurfsmuster)" title="Interceptor (Entwurfsmuster)">Interceptor</a>&nbsp;| <a href="Nullobjekt_(Entwurfsmuster)" title="Nullobjekt (Entwurfsmuster)">Nullobjekt</a>&nbsp;| <a href="Protokollstapel" title="Protokollstapel">Protokollstapel</a>
</p>
</td></tr>
<tr>
<td class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;border: 1px solid transparent;border-top: 1px solid #FFF;border-bottom: 2px solid #FFF;padding: 0 1em;"><b>Muster für <a href="Objektrelationale_Abbildung" title="Objektrelationale Abbildung">objekt-<br>relationale Abbildung</a></b>
</td>
<td class="hlist" style="text-align: left;border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: 0 .25em;">
<p><a href="Transferobjekt" title="Transferobjekt">Datentransferobjekt</a>&nbsp;| Table Data Gateway&nbsp;| Row Data Gateway&nbsp;| <a href="Active_Record" title="Active Record">Active Record</a>&nbsp;| <a href="Unit_of_Work" title="Unit of Work">Unit of Work</a>&nbsp;| Identity Map&nbsp;| <a href="Lazy_Loading" title="Lazy Loading">Lazy Loading</a>&nbsp;| Identity Field&nbsp;| Dependent Mapping&nbsp;| Embedded Value&nbsp;| Serialized LOB&nbsp;| Inheritance Mapper&nbsp;| Metadata Mapping&nbsp;| Query Object&nbsp;| <a href="Command-Query-Responsibility-Segregation" title="Command-Query-Responsibility-Segregation">Command-Query-Responsibility-Segregation</a>
</p>
</td></tr>
<tr>
<td class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;border: 1px solid transparent;border-top: 1px solid #FFF;border-bottom: 2px solid #FFF;padding: 0 1em;"><b><a href="Nachrichten%C3%BCbermittlungsmuster" title="Nachrichtenübermittlungsmuster">Nachrichten-<br>übermittlungsmuster</a></b>
</td>
<td class="hlist" style="text-align: left;border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: 0;">
<div class="Broken-NavContent">
<table class="wikitable erw-nav-zebra" style="width:100%;margin:0;text-align:left;border-collapse:collapse;">
<tbody><tr>
<td class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;border: 1px solid transparent;border-top: 1px solid #FFF;border-bottom: 2px solid #FFF;padding: 0 1em;"><b>Integrationsarten</b>
</td>
<td class="hlist" style="text-align: left;border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: 0 .25em;">
<p>File Transfer&nbsp;| Shared Database&nbsp;| Remote Procedure Invocation&nbsp;| Messaging
</p>
</td></tr>
<tr>
<td class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;border: 1px solid transparent;border-top: 1px solid #FFF;border-bottom: 2px solid #FFF;padding: 0 1em;"><b>Nachrichtenaufbau</b>
</td>
<td class="hlist" style="text-align: left;border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: 0 .25em;">
<p><a href="Message_(Entwurfsmuster)" title="Message (Entwurfsmuster)">Message</a>&nbsp;| <a href="Command_Message" title="Command Message">Command Message</a>&nbsp;| <a href="Document_Message" title="Document Message">Document Message</a>&nbsp;| <a href="Event_Message" title="Event Message">Event Message</a>&nbsp;| Request-Reply&nbsp;| Return Address&nbsp;| Correlation Identifier&nbsp;| Message Sequence&nbsp;| Message Expiration&nbsp;| Format Indicator
</p>
</td></tr>
<tr>
<td class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;border: 1px solid transparent;border-top: 1px solid #FFF;border-bottom: 2px solid #FFF;padding: 0 1em;"><b><a href="Teilnehmer_(Kommunikationssystem)" title="Teilnehmer (Kommunikationssystem)">Endpunkte</a></b>
</td>
<td class="hlist" style="text-align: left;border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: 0 .25em;">
<p>Message Endpoint&nbsp;| Messaging Gateway&nbsp;| Messaging Mapper&nbsp;| Transactional Client&nbsp;| Polling Consumer&nbsp;| Event-driven Consumer&nbsp;| Competing Consumers&nbsp;| Message Dispatcher&nbsp;| Selective Consumer&nbsp;| Durable Subscriber&nbsp;| Idempotent Receiver&nbsp;| Service Activator
</p>
</td></tr>
<tr>
<td class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;border: 1px solid transparent;border-top: 1px solid #FFF;border-bottom: 2px solid #FFF;padding: 0 1em;"><b><a href="Kanal_(Informationstheorie)" title="Kanal (Informationstheorie)">Kanäle</a></b>
</td>
<td class="hlist" style="text-align: left;border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: 0 .25em;">
<p>Message Channel&nbsp;| Point-to-Point Channel&nbsp;| Publisher-Subscriber Channel&nbsp;| Datatype Channel&nbsp;| Invalid Message Channel&nbsp;| Dead Letter Channel&nbsp;| Guaranteed Delivery&nbsp;| Channel Adapter&nbsp;| Messaging Bridge&nbsp;| Message Bus
</p>
</td></tr>
<tr>
<td class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;border: 1px solid transparent;border-top: 1px solid #FFF;border-bottom: 2px solid #FFF;padding: 0 1em;"><b><a href="Nachrichtenvermittlung" class="mw-redirect" title="Nachrichtenvermittlung">Nachrichtenvermittlung</a></b>
</td>
<td class="hlist" style="text-align: left;border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: 0 .25em;">
<p>Pipes-and-Filters&nbsp;| Message Router&nbsp;| Content-based Router&nbsp;| Message Filter&nbsp;| Dynamic Router&nbsp;| Recipient List&nbsp;| Splitter&nbsp;| Aggregator&nbsp;| Resequencer&nbsp;| Composed Message Processor&nbsp;| Scatter-Gather&nbsp;| Routing Slip&nbsp;| Process Manager&nbsp;| Message Broker
</p>
</td></tr>
<tr>
<td class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;border: 1px solid transparent;border-top: 1px solid #FFF;border-bottom: 2px solid #FFF;padding: 0 1em;"><b>Nachrichtenumwandlung</b>
</td>
<td class="hlist" style="text-align: left;border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: 0 .25em;">
<p>Message Translator&nbsp;| Envelope Wrapper&nbsp;| Content Enricher&nbsp;| Content Filter&nbsp;| Claim Check&nbsp;| Normalizer&nbsp;| Canonical Data Model
</p>
</td></tr>
<tr>
<td class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;border: 1px solid transparent;border-top: 1px solid #FFF;border-bottom: 1px solid #FFF;padding: 0 1em;"><b>Systemmanagement</b>
</td>
<td class="hlist" style="text-align: left;border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: 0 .25em;">
<p>Control Bus&nbsp;| Detour&nbsp;| Wire Tap&nbsp;| Message History&nbsp;| Message Store&nbsp;| Smart Proxy&nbsp;| Test Message&nbsp;| Channel Purger
</p>
</td></tr>

























</tbody></table></div>
</td></tr>
<tr>
<td class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;border: 1px solid transparent;border-top: 1px solid #FFF;border-bottom: 1px solid #FFF;padding: 0 1em;"><i><b>andere</b></i>
</td>
<td class="hlist" style="text-align: left;border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: 0 .25em;">
<p>Application Controller&nbsp;| <a href="Business_Delegate" title="Business Delegate">Business Delegate</a>&nbsp;| <a href="Data_Access_Object" title="Data Access Object">Data Access Object</a>&nbsp;| <a href="Dependency_Injection" title="Dependency Injection">Dependency Injection</a>&nbsp;| <a href="Extension_Interface" title="Extension Interface">Extension Interface</a>&nbsp;| <a href="Fluent_Interface" title="Fluent Interface">Fluent Interface</a>&nbsp;| <a href="Inversion_of_Control" title="Inversion of Control">Inversion of Control</a> (IoC)&nbsp;| <a href="Lock" title="Lock">Lock</a>&nbsp;| <a href="Model_View_Controller" title="Model View Controller">Model View Controller</a> (MVC)&nbsp;| <a href="Model_View_Presenter" title="Model View Presenter">Model View Presenter</a> (MVP)&nbsp;| <a href="Model_View_Update" title="Model View Update">Model View Update</a> (MVU)&nbsp;| <a class="mw-selflink selflink">Model View ViewModel</a> (MVVM)&nbsp;| Page Controller&nbsp;| <a href="Registry_(Entwurfsmuster)" title="Registry (Entwurfsmuster)">Registry</a>&nbsp;| Remote Facade&nbsp;| <a href="Repository_(Entwurfsmuster)" title="Repository (Entwurfsmuster)">Repository</a>&nbsp;| <a href="Service_Locator" class="mw-redirect" title="Service Locator">Service Locator</a>&nbsp;| Session State&nbsp;| Table Module&nbsp;| Template View&nbsp;| <a href="Threadpool" title="Threadpool">Threadpool</a>&nbsp;| Transaction Script&nbsp;| Transform View&nbsp;| Two-Step View&nbsp;| <a href="Value_Object" title="Value Object">Value Object</a>
</p>
</td></tr>



















































</tbody></table><div class="erw-nav-leiste" style="margin:.1em 0;padding:.1em 1em;text-align:left;font-size:90%;">Siehe auch: &nbsp;<a href="Analysemuster" title="Analysemuster">Analysemuster</a>&nbsp;| <a href="Architekturmuster" title="Architekturmuster">Architekturmuster</a>&nbsp;| <a href="Integrationsmuster" title="Integrationsmuster">Integrationsmuster</a>&nbsp;| <a href="SOA-Muster" title="SOA-Muster">SOA-Muster</a> </div></div></div></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2025-10-09" href="https://de.wikipedia.org/wiki/?title=Model_View_ViewModel&amp;oldid=260438333">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>

</body></html>